//
//  CZStatusListViewModel.swift
//  weibo
//
//  Created by Apple on 16/3/16.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit
//  封装首页网络请求
class CZStatusListViewModel: NSObject {
    
    var statusList: [CZStatusViewModel]?
    
    func loadData(isPullup: Bool, finished: (isSuccess: Bool, message: String)->()) {
        
        //  判断isPullup 是否是上拉加载，如果是则取得数组里面的最后一个元素拿到id去请求数据，否则默认值0
        var maxId = isPullup ? (statusList?.last?.status?.id ?? 0) : 0
        //  因为maxid返回的时候是小于或者等于maxid，需要减去1 获取不重复的数据
        if maxId > 0 {
            maxId -= 1
        }
        
        let sinceId = isPullup ? 0 : (statusList?.first?.status?.id ?? 0)
        
        CZNetWorkTools.netWorkTools.loadStauts(CZUserAccountViewModel.sharedAccount.accessToken!, sinceId: sinceId, maxId: maxId) { (response, error) -> () in
            var message = "没有微博数据"
            if error != nil {
                print(error)
                finished(isSuccess: false, message: message)
                return
            }
            
            guard let responseDic = response as? [String: AnyObject] else {
                print("不是json数据")
                return
            }
            
            guard let statusArray = responseDic["statuses"] as? [[String: AnyObject]] else {
                return
            }
            
            var tempArray = [CZStatusViewModel]()
            for value in statusArray {
                let status = CZStatus(dic: value)
                
                tempArray.append(CZStatusViewModel(status: status))
            }
            //  设置数据源，刷新数据
            if self.statusList == nil {
                self.statusList = [CZStatusViewModel]()
            }
            //  一定要记住如果是上拉加载数据在数据后面要追加数组，要不然会判断等于最后一个cell，又去执行请求数据了导致递归调用了
            if isPullup {
                self.statusList = self.statusList! + tempArray
            } else {
                //  下拉刷新要请求的数据在前面
                self.statusList = tempArray + self.statusList!
            }


            if statusArray.count > 0 {
                message = "加载了\(statusArray.count)微博数据"
            }
            
            //  通知界面刷新数据
            finished(isSuccess: true, message: message)
        }
        
    }
}
